package daos;

import java.util.List;

import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;

import uady.sicei.domain.AlumnoUADYMatriculado;
import uady.sicei.service.web.inscripcion.AlumnoUADYMatriculadoService;

import Utils.HibernateExecuter;
import Utils.IHibernateHQLQuery;
import beans.Encuesta;
import beans.FormatoCuestionario;
import beans.Pregunta;
import beans.Respuesta;

public class FormatoCuestionarioDao {
	 private static FormatoCuestionarioDao formatoCuestionarioDao=null;
		
		private FormatoCuestionarioDao(){
			
		}
		
		public static FormatoCuestionarioDao getInstance(){
			if(formatoCuestionarioDao==null)
				formatoCuestionarioDao=new FormatoCuestionarioDao();
			return formatoCuestionarioDao;
			
		}
		
		public boolean guardarCuestionario(final FormatoCuestionario formatoCuestionario){
			
			HibernateExecuter hibernateExecuter= new HibernateExecuter();
			try {
				hibernateExecuter.executeQuery
									(
											new IHibernateHQLQuery() 
											{
												public Object executeQuery(Session session) 
												{
													
												session.saveOrUpdate(formatoCuestionario);
													return null;
												}
											}
									);
			} catch (Exception e) {
				
				e.printStackTrace();
				return false;
			}

			return true;
					
				}	
		
		
		public FormatoCuestionario consultarFormatoById(final int idFormato){

			HibernateExecuter hibernateExecuter= new HibernateExecuter();
			FormatoCuestionario formato=null;
			try {
				 formato=(FormatoCuestionario) hibernateExecuter.executeQuery
							(
									new IHibernateHQLQuery() 
									{
										public Object executeQuery(Session session) 
										{
											
									 
										 
											FormatoCuestionario formato=(FormatoCuestionario)session.get(FormatoCuestionario.class,idFormato);
										inicializarPreguntasFormato(formato);
											return formato;
										}
									}
							);
		} catch (Exception e) {

		e.printStackTrace();

		}
			return formato;
			
			}
		

		private void inicializarPreguntasFormato(FormatoCuestionario formato){
		
			Hibernate.initialize(formato.getCatalogoPreguntas());
			List<Pregunta>  preguntas=formato.getCatalogoPreguntas();
			for(Pregunta pregunta :preguntas){
				Hibernate.initialize(pregunta.getTipoPregunta());
				inicializarRespuestas(pregunta);
		}}
		

		public boolean borrarFormato(final FormatoCuestionario formato){
			HibernateExecuter hibernateExecuter= new HibernateExecuter();
			try {
				hibernateExecuter.executeQuery
									(
											new IHibernateHQLQuery() 
											{
												public Object executeQuery(Session session) 
												{
													
												session.delete(formato);
													return null;
												}
											}
									);
			} catch (Exception e) {
				
				e.printStackTrace();
				return false;
			}

			return true;
					
			
		}
		private void inicializarRespuestas(Pregunta pregunta){
			Hibernate.initialize(pregunta.getCatalogoRespuestas());
			List<Respuesta> respuestas=pregunta.getCatalogoRespuestas();
			for(Respuesta respuesta: respuestas){
				Hibernate.initialize(respuesta.getTipoRespuesta());
			Hibernate.initialize(respuesta.getFormatoRespuesta());
			}
			
}}

